package Task1;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

/**
 *  使用 List 集合实现简易的学生信息管理系统，要求打印字符界面提示用户选择相应的功能，
 *  根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。
 *  其中学生的信息有：学号、姓名、年龄。 要求： 尽量将功能拆分为多个.java 文件。
 */
public class Task1Test {
    public static void main(String[] args) throws IOException {
        /*FileReader fr = new FileReader("/a.txt");
        List<Character> ls= new LinkedList<>();
        int res = 0;
        while ((res=fr.read())!=-1){
            ls.add((char)res);
        }*/
        outer: while(true) {
        //提示语
            System.out.println("欢迎来到学生信息管理系统：");
            System.out.println("输入1增加学生信息");
            System.out.println("输入2删除学生信息");
            System.out.println("输入3修改学生信息");
            System.out.println("输入4查找学生信息");
            System.out.println("输入5遍历学生信息");
            System.out.println("输入6退出系统");
            System.out.println("请问你要进行的操作是：");
            //记录操作选项
            Scanner sc = new Scanner(System.in);
            int op = sc.nextInt();
            //用switch选择不同的操作
            switch (op) {
                //增加学生信息到双map
                case 1:
                    System.out.println("请依次输入要增加的学生学号，年龄，姓名");
                    try {
                        IdException.setId();
                        AgeException.setAge();
                    } catch (InputMismatchException e){
                        System.out.println("输入的数据类型有误，请重新输入");
                        e.printStackTrace();
                        continue;
                    }finally{
                    Integer id = IdException.getId();
                    Integer age = AgeException.getAge();
                    String name = sc.next();
                    add.IdAge(id, age);
                    add.IdName(id, name);
                    System.out.println("信息已录入");
                    break;}
                //从双map中删除学生信息
                case 2:
                    System.out.println("请输入要删除信息的学生学号：");
                    try {
                        IdException.setId();
                    } catch (InputMismatchException e){
                        System.out.println("输入的数据类型有误，请重新输入");
                        e.printStackTrace();
                        continue;
                    }finally{
                    Integer id2 = IdException.getId();
                    remove.rm(id2);
                    System.out.println("该学生信息已删除");
                    break;}
                 //从双map中修改学生信息
                case 3:
                    System.out.println("请依次输入要修改的学生学号，年龄，姓名");
                    try {
                        IdException.setId();
                        AgeException.setAge();
                    } catch (InputMismatchException e){
                        System.out.println("输入的数据类型有误，请重新输入");
                        e.printStackTrace();
                        continue;
                    }finally {
                        Integer id3 = IdException.getId();
                        Integer age2 = AgeException.getAge();
                        String name2 = sc.next();
                        modify.IdAge(id3, age2);
                        modify.IdName(id3, name2);
                        System.out.println("学生信息已修改");
                        break;
                    }

                //从双map中查找学生信息
                case 4:
                    System.out.println("请输入要查找信息的学生学号");
                    try {
                        IdException.setId();
                    } catch (InputMismatchException e){
                        System.out.println("输入的数据类型有误，请重新输入");
                        e.printStackTrace();
                        continue;
                    }finally {
                    Integer id4 = IdException.getId();
                    search.view(id4);
                    break;}
                //遍历双map中的学生信息
                case 5:
                   iterate.all();
                    break;
                //结束外循环
                //用FileWriter和foreach循环写入文件
                case 6:
                    FileWriter fw = null;
                    try{
                        fw = new FileWriter("/Users/ZiyangZhang/Desktop/CS/java/Module1Task/src/com/lagou/Module4/src/Task1/a.txt");
                        Set<Integer> IdSet =Student.idName.keySet();
                        for (Integer id:IdSet
                        ) {
                            fw.write(id);
                        }

                        Collection<String> NameSet = Student.idName.values();
                        for (String name:NameSet
                        ) {
                            fw.write(name);
                        }

                        Collection<Integer> AgeSet = Student.idAge.values();
                        for (Integer age:AgeSet
                        ) {
                            fw.write(age);
                        }
                    }catch (IOException e){
                        e.printStackTrace();
                    }finally {
                        if (null!=fw){
                            try {
                                fw.close();
                            }catch (IOException e){
                                e.printStackTrace();
                            }
                        }
                    }
                    break outer;
                //非合法方式，提醒重新输入
                default:
                    System.out.println("请重新输入");
            }
        }
    }
}
